	package entities;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
@Table (name = "Clientes")
public class Cliente extends EntidadBase{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idCliente;
	
	private String razonSocial;
	
	@Column(name = "idCUIT")
	private String CUIT;
	
	@ManyToOne
	@JoinColumn(name = "IdODV", referencedColumnName = "IdODV")
	private ODV odv;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "idCliente")
	private List<DescuentoCliente> descuentos;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "idCliente")
	private List<SolicitudCotizacion> solicitudes;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCliente")
	private List<Cotizacion> cotizaciones;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "idCliente")
	private List<PedidoCliente> pedidos;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "idCliente")
	private List<RemitoExterno> remitos;	
		
	public Cliente() {
		this.descuentos = new ArrayList<DescuentoCliente>();
		this.solicitudes = new ArrayList<SolicitudCotizacion>();
		this.cotizaciones = new ArrayList<Cotizacion>();
		this.pedidos = new ArrayList<PedidoCliente>();
		this.remitos = new ArrayList<RemitoExterno>();
	}

	public String getRazonSocial() {
		return razonSocial;
	}

	public void setRazonSocial(String razonSocial) {
		this.razonSocial = razonSocial;
	}

	public String getCUIT() {
		return CUIT;
	}

	public void setCUIT(String cUIT) {
		CUIT = cUIT;
	}

	public ODV getOdv() {
		return odv;
	}

	public void setOdv(ODV odv) {
		this.odv = odv;
	}

	public List<DescuentoCliente> getDescuentos() {
		return descuentos;
	}

	public void setDescuentos(List<DescuentoCliente> descuentos) {
		this.descuentos = descuentos;
	}

	public List<SolicitudCotizacion> getSolicitudes() {
		return solicitudes;
	}

	public void setSolicitudes(List<SolicitudCotizacion> solicitudes) {
		this.solicitudes = solicitudes;
	}

	public List<Cotizacion> getCotizaciones() {
		return cotizaciones;
	}

	public void setCotizaciones(List<Cotizacion> cotizaciones) {
		this.cotizaciones = cotizaciones;
	}

	public List<PedidoCliente> getPedidos() {
		return pedidos;
	}

	public void setPedidos(List<PedidoCliente> pedidos) {
		this.pedidos = pedidos;
	}

	public List<RemitoExterno> getRemitos() {
		return remitos;
	}

	public void setRemitos(List<RemitoExterno> remitos) {
		this.remitos = remitos;
	}

	public int getIdCliente() {
		return idCliente;
	}

	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}
	

}
